Page({

    data: {
        // 图片列表(可预览使用)
        images: [],
    },

    /**
     * 上传图片
     * @description 弹出使用相册或相机选择框
     * @return void
     */
    upload() {
        wx.chooseMedia({
            count: 3,//最多可以选择的文件个数
            mediaType: ['image'],//只允许图片
            sourceType: ['album', 'camera'],//图片和视频选择的来源
            camera: 'back',//使用前置或后置摄像头
            success: (res) => {
                // 正常
                if(res.errMsg == 'chooseMedia:ok') {
                    // 业务处理
                    this.result(res)
                }
                // 异常
                else{
                    // 错误处理
                    this.errors(res)
                }
            }
        })
    },

    /**
     * 业务处理
     * @description 上传成功后的操作
     * @param {Object} data - 成功回调
     * @return void
     */
    result(data) {
        // 赋值本地显示
        // console.log(data.tempFiles)
        this.setData({ images: data.tempFiles })
        console.log(this.data.images)
    },

    /**
     * 错误处理
     * @description 上传失败后的操作
     * @param {Object} error - 失败回调
     * @return void
     */
    errors(error) {
        console.log(`出错了(${error})`)
        // ...
    },

    /**
     * 图片预览
     * @description 点击图片触发
     * @param {Object} e - 事件对象(要预览的图片索引)
     * @return void
     */
    preview(e) {
        // 获取索引/图片
        let path = e.currentTarget.dataset.path
        // console.log(path)
        wx.previewImage({
            urls: [path] //需要预览的图片
        })
    },

    /**
     * 删除图片
     * @description 点击删除触发
     * @param {Object} e - 事件对象(要删除的图片索引)
     * @return void
     */
    deletes(e) {
        // 获取索引/图片
        let index = e.currentTarget.dataset.index
        let result = this.data.images
        // 删除指定图片(直接控制源数组)
        this.delElByIndex(result, index)
        // setData
        this.setData({ images: result })
    },

    /**
     * 根据下标删除指定元素
     * @description 此方法直接改变源数组
     * @param {Array} arr - 源数组
     * @param {Number} index - 要删除的索引
     * @return void
     */
    delElByIndex(arr,index){
        for(var i=index,len=arr.length-1;i<len;i++)
           arr[i]=arr[i+1];
        arr.length = len;
    },

    /**
     * 上传到服务器
     * @description 
     * 这块每个人的实际情况不同，
     * 请根据您的需求进行改造。
     * @return void
     */
    requirets() {
        console.log('如果报域名不合法，请在详情菜单栏-本地设置中勾选【不校验合法域名】')
        // 要上传的文件
        const file = this.data.images
        wx.uploadFile({
            // 上传地址(ElementUI的地址)随时失效
            // 请替换为您的接口地址
            url: 'https://jsonplaceholder.typicode.com/posts/',
            filePath: file[0].tempFilePath,//例如第一张
            name: 'name',
            formData: {//其他携带数据
                'token': '123456'
            },
            // 上传成功
            success: (res) => {
                console.log(res)
            },
            // 上传失败
            fail: (err) => {
                console.log(err)
            }
        })
    },

})